home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / nfsd / cache.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  83 lines

  1. /*
  2.  * include/linux/nfsd/cache.h
  3.  *
  4.  * Request reply cache. This was heavily inspired by the
  5.  * implementation in 4.3BSD/4.4BSD.
  6.  *
  7.  * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
  8.  */
  9.  
  10. #ifndef NFSCACHE_H
  11. #define NFSCACHE_H
  12.  
  13. #ifdef __KERNEL__
  14. #include <linux/in.h>
  15. #include <linux/uio.h>
  16.  
  17. /*
  18.  * Representation of a reply cache entry. The first two members *must*
  19.  * be hash_next and hash_prev.
  20.  */
  21. struct svc_cacherep {
  22.     struct svc_cacherep *    c_hash_next;
  23.     struct svc_cacherep *    c_hash_prev;
  24.     struct svc_cacherep *    c_lru_next;
  25.     struct svc_cacherep *    c_lru_prev;
  26.     unsigned char        c_state,    /* unused, inprog, done */
  27.                 c_type,        /* status, buffer */
  28.                 c_secure : 1;    /* req came from port < 1024 */
  29.     struct sockaddr_in    c_addr;
  30.     u32            c_xid;
  31.     u32            c_prot;
  32.     u32            c_proc;
  33.     u32            c_vers;
  34.     unsigned long        c_timestamp;
  35.     union {
  36.         struct kvec    u_vec;
  37.         u32        u_status;
  38.     }            c_u;
  39. };
  40.  
  41. #define c_replvec        c_u.u_vec
  42. #define c_replstat        c_u.u_status
  43.  
  44. /* cache entry states */
  45. enum {
  46.     RC_UNUSED,
  47.     RC_INPROG,
  48.     RC_DONE
  49. };
  50.  
  51. /* return values */
  52. enum {
  53.     RC_DROPIT,
  54.     RC_REPLY,
  55.     RC_DOIT,
  56.     RC_INTR
  57. };
  58.  
  59. /*
  60.  * Cache types.
  61.  * We may want to add more types one day, e.g. for diropres and
  62.  * attrstat replies. Using cache entries with fixed length instead
  63.  * of buffer pointers may be more efficient.
  64.  */
  65. enum {
  66.     RC_NOCACHE,
  67.     RC_REPLSTAT,
  68.     RC_REPLBUFF,
  69. };
  70.  
  71. /*
  72.  * If requests are retransmitted within this interval, they're dropped.
  73.  */
  74. #define RC_DELAY        (HZ/5)
  75.  
  76. void    nfsd_cache_init(void);
  77. void    nfsd_cache_shutdown(void);
  78. int    nfsd_cache_lookup(struct svc_rqst *, int);
  79. void    nfsd_cache_update(struct svc_rqst *, int, u32 *);
  80.  
  81. #endif /* __KERNEL__ */
  82. #endif /* NFSCACHE_H */
  83.